0%

在Linux上配置Keycloak Standalone模式

Keycloak是一个比较流行的OAuth/OIDC服务器和IAM系统, 本文将介绍如何在Linux上配置Keycloak以standalone模式运行,并且使用MariaDB作为后端数据库存储。

这里假设:

  • 安装Keycloak的Linux机器的IP地址是: 192.168.0.152;
  • 安装MariaDB的Linux机器的IP地址是: 192.168.0.151;
  • Keycloak的数据库的名称是keycloak_db;
  • Keycloak将使用用户名 keycloak 和密码 123456 连接数据库;
  • 所有的Linux系统都是Ubuntu Linux Server 20.04;
  • Keycloak版本是10.0.1.

MariaDB安装与配置

  1. 首先需要安装MariaDB,这里就不作介绍了,网上有很多教程可以参考;

  2. 使用root用户登入MariaDB:

    1
    $ sudo mysql -u root -u
  3. 在MariaDB中创建名为keycloak_db的数据库:

    1
    > CREATE DATABASE keycloak_db;
  4. 在MariaDB中创建名为keycloak的用户并赋予它操作keycloak_db的权限:

    1
    2
    3
    4
    5
    > create user 'keycloak'@'192.168.0.152' identified by '123456';

    > grant all on keycloak_db.* to 'keycloak'@'192.168.0.152' with grant option;

    > flush privileges;

Keycloak安装与配置

  1. 下载keycloak:

    1
    $ wget https://downloads.jboss.org/keycloak/10.0.1/keycloak-10.0.1.tar.gz
  2. 解压keycloak:

    1
    $ tar zxvf keycloak-10.0.1.tar.gz
  3. 下载MariaDB client JAR:

    1
    $ wget https://downloads.mariadb.com/Connectors/java/connector-java-2.6.0/mariadb-java-client-2.6.0.jar
  4. 在keycloak中给MariaDB client创建对应的文件夹并将MariaDB client拷贝入文件夹:

    1
    2
    3
    $ mkdir -p keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/

    $ cp mariadb-java-client-2.6.0.jar keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/
  5. 为MariaDB client创建module.xml文件:

    1
    $ vi keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/module.xml

    文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" ?>

    <module xmlns="urn:jboss:module:1.3" name="com.mariadb">
    <resources>
    <resource-root path="mariadb-java-client-2.6.0.jar"/>
    </resources>
    <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    </dependencies>
    </module>
  6. 编辑keycloak的standalone.xml文件, 配置数据库驱动和数据库连接相关信息:

    1
    $ vi keycloak-10.0.1/standalone/configuration/standalone.xml

    把datasource部分替换成:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <datasource jndi-name="java:/jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true">
    <connection-url>jdbc:mariadb://192.168.0.151:3306/keycloak_db?characterEncoding=utf8&amp;useSSL=false</connection-url>
    <driver>mariadb</driver>
    <pool>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>15</max-pool-size>
    </pool>
    <security>
    <user-name>keycloak</user-name>
    <password>123456</password>
    </security>
    </datasource>

    然后在drivers里加上MariaDB相关的driver信息:

    1
    2
    3
    <driver name="mariadb" module="com.mariadb">
      <driver-class>org.mariadb.jdbc.Driver</driver-class>
     </driver>
  7. 缺省配置下,keycloak只绑定到了127.0.0.1的端口,所以从其他机器上是访问不了keycloak的admin界面的,为了可以从其他机器上访问keycloak的admin界面,需要编辑standalone.xml文件:

    1
    $ vi keycloak-10.0.1/standalone/configuration/standalone.xml

    然后找到以下内容:

    1
    2
    3
    <interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    </interface>

    把它改成:

    1
    2
    3
    <interface name="public">
    <inet-address value="${jboss.bind.address:0.0.0.0}"/>
    </interface>
  1. 配置完成后,尝试运行keycloak:

    1
    $ ./keycloak-10.0.1/bin/standalone.sh

检查keycloak是否正常启动,一般第一次启动keycloak需要在数据库中创建和初始化需要的表,所以要花一些时间。启动完成后访问: http://127.0.0.1:8080/auth 看看是否可以正常显示keycloak的admin界面。

至此,keycloak的standalone模式配置完成。